首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

碰到以下有关问题,求高手解决

2012-04-22 
碰到以下问题,求高手解决1在裘老翻译的 BS的C++ 程序设计语言中看到这样一句话:this 并不是一个常规变量,

碰到以下问题,求高手解决
1
在裘老翻译的 BS的C++ 程序设计语言中看到这样一句话
:this 并不是一个常规变量,不能取得this的地址或者给他赋值,并不是很理解啊
2
关于 vector 中的 insert(p,x)//在p前插入x,这个p是指什么啊,例如
student a;//student 为自定义的学生类
student c;
vector<student> b;
b.insert(a,c);//我想在a之前插入c,怎么用
上面的合法么??同理erase(p);是指什么啊
insert(p,first,last) //在p前插入[list:last[ 的元素;这有怎么用啊

求高手啊

[解决办法]
1. 无视
2. p,迭代器 
不合法
迭代器
在位置p插入 [first,last)范围内的元素
[解决办法]
1、this本身就不是一个变量,针对每一个对象来说这家伙就是一个常量。你当然没法给一个常量赋值了。


[解决办法]
1.其实只要说一句话: this 指针不是左值.

2.
http://en.cppreference.com/w/cpp/container/vector

学习上面链接.或者看书.
[解决办法]
1、this 并不是一个常规变量,不能取得this的地址或者给他赋值。

因为我们没有必要去取得this指针的地址,或者给他赋值,所以编译器作了这样的限制。
也就是说这个变量编译器可以用,但是你不能用。
不然你把this指针的值改了那不是乱套了。
而获取this指针的值破坏了封装性。

也可以按一楼的,先无视。上面的是我个人的理解。

2、这个问题我暂时没法回答,就算给了示例你目前也比较难看懂。
首先你要先把迭代器的概念弄清楚。
对标准库有关的章节再反复看看吧。。
[解决办法]

探讨

引用:

1、this本身就不是一个变量,针对每一个对象来说这家伙就是一个常量。你当然没法给一个常量赋值了。
无法赋值是好理解,但是怎么理解不能取得this的地址

[解决办法]
探讨
小弟弱弱的再问一下,如下的操作合法么??
vector<student> b;
student a,c,d;
b.push_back(a);
b.push_back(c);
vector<student>::iterator is=b.begin();
b.insert(is+1,d);//这样是否就可以实现在c前面插入d啊??

热点排行