返回信息流1.Why is the code unsafe? How would you make the function safe ?
LPSTR Uppercases(LPSTR Data)
{
CHAR buffer(256);
_strycpy(buffer,Data);
return _strupr(buffer);
}
2.Check below class declaration, please implement the implementations.
class string{
public:
String(const char *str=NULL);
String(const String &another);
~String();
String operator=(const String &third);
private:
char *m,data;
}
3.What does “operator Test::A()” mean? TestFn1(obj) can’t get through the compiling,but TestFn2(obj) and TestFn3(obj) can,why?
namespace Test{ //namespace Test是干啥的???
class A{
public:
friend void TestFn1(const A &a){};
};
void TestFn2(const A &a){};
}
class B{
public:
operator Test::A(){return Test::A();}
};
using namespace Test;//这是啥意思???
void TestFn3(const A &a){}
void main(){
B obj;
TestFn1(obj);
TestFn2(obj);
TestFn3(obj);
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #71816同步于 2013/6/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
三个C++问题,求指教
Mulany
2013/6/16镜像同步24 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
1. return _strupr(buffer); 这个buffer是静态分配的,在return后离开作用域,数据可能被销毁。
2. 重点就是在OPERATOR等号里完成个分配内存再拷贝
3.namespace C++命名空间。。。楼主您这 operator Test::A(){return Test::A();} 是啥??
这些挺基本的,可以考虑先研究下C++教材
我就把原题给敲上了 我也不懂
关于命名空间具体是怎么用呀?namespace用来定义命名空间?
【 在 liam 的大作中提到: 】
: 1. return _strupr(buffer); 这个buffer是静态分配的,在return后离开作用域,数据可能被销毁。
: 2. 重点就是在OPERATOR等号里完成个分配内存再拷贝
: 3.namespace C++命名空间。。。楼主您这 operator Test::A(){return Test::A();} 是啥??
: ...................
【 在 Mulany 的大作中提到: 】
: 我就把原题给敲上了 我也不懂
: 关于命名空间具体是怎么用呀?namespace用来定义命名空间?
http://www.cnblogs.com/autocrat/archive/2010/05/05/1727630.html,这百度上的,顺带的,可以百度下“C++静态函数”加深理解
明明空间。实际上就是防止名字冲突的。
比如你们很多人在写一个lib,如果不用明明空间,很有可能会各种函数名之类的冲突。加上namespace就不会冲突了。除非空间的名字也一样
ok 谢谢
【 在 liam 的大作中提到: 】
:
: http://www.cnblogs.com/autocrat/archive/2010/05/05/1727630.html,这百度上的,顺带的,可以百度下“C++静态函数”加深理解
使用了某个命名空间的话,在接下来的程序里出现的名字,若空间里有,就是指该空间内的名字是吗?是这样理解么
【 在 a206206 的大作中提到: 】
: 明明空间。实际上就是防止名字冲突的。
: 比如你们很多人在写一个lib,如果不用明明空间,很有可能会各种函数名之类的冲突。加上namespace就不会冲突了。除非空间的名字也一样
先解释下命名空间吧,打个比方吧,如果一个学校(相当于头文件)只有两个班(两个命名空间),每个班里都有一个叫小明的,然后有一天校长开全效大会(main函数),如果校长直接说小明,那么就会造成混乱,因为不知道是叫哪个小明..如果校长在叫小明之前说了一句,"现在我们说说1班的问题"(using namespace),然后再点名小明,这时我们就知道是在叫1班的小明了...
1:buffer只有256,而DATA不知道大小,可能会造成溢出.(按照信安理论,可以用这种方法进行代码注入.挺凶残的,可以在申明buffer前判断data大小再申明buffer)
2:感觉没什么吧,一个是构造函数,一个是复制函数,一个是析构函数,还有一个符号重载,翻翻书应该没问题了.
3:就是命名空间的问题了,,至于第一个问题,我也不是很清楚..然后由于TestFn1是在A类内定义的,所以不能被直接调用,用申明一个A类实例.之后TestFn2说了,校长已经申明了要说1班的问题了..然后TestFn3不用说了吧,都在main函数文件里面了...