C++ “const”的目的是什么;at();和一个非常量at();在这个代码中? 模板 类向量{ 向量(); 向量(常数向量&c); 向量(size_t num,const t&val=t()); ~vector(); T&operator[](尺寸指数); 常量和运算符[](大小索引)常量; 向量运算符=(常量向量&v); T&at(尺寸和位置); 施工和验收(尺寸位置)施工; void pop_back(); 无效推回(常数T&val); 大小\u t大小()常量; };

C++ “const”的目的是什么;at();和一个非常量at();在这个代码中? 模板 类向量{ 向量(); 向量(常数向量&c); 向量(size_t num,const t&val=t()); ~vector(); T&operator[](尺寸指数); 常量和运算符[](大小索引)常量; 向量运算符=(常量向量&v); T&at(尺寸和位置); 施工和验收(尺寸位置)施工; void pop_back(); 无效推回(常数T&val); 大小\u t大小()常量; };,c++,constants,C++,Constants,它允许您在向量为常量或非常量时查找项目 例如: template<typename T> class vector { vector(); vector(const vector& c); vector(size_t num, const T& val = T()); ~vector(); T& operator[](size_t index); const T& ope

它允许您在向量为常量或非常量时查找项目

例如:

template<typename T>    
class vector {     
 vector();     
 vector(const vector& c);     
 vector(size_t num, const T& val = T());     
 ~vector();      
 T& operator[](size_t index);     
 const T& operator[](size_t index) const;     
 vector operator=(const vector& v);      
 T& at(size_t loc);     
 const T& at(size_t loc) const;      
 void pop_back();     
 void push_back(const T& val);      
 size_t size() const;     
}; 
常数向量x;
x、 在(0);//调用const版本;
向量y;
x、 在(0);//调用非常量版本;

<>这是一个非常普通的C++范例,它是基于<代码> const < />代码的方法。在这个例子中,你发布的
操作符[]
也有常量和非常量版本,原因相同。

它允许你在向量为常量或非常量时查找项目

例如:

template<typename T>    
class vector {     
 vector();     
 vector(const vector& c);     
 vector(size_t num, const T& val = T());     
 ~vector();      
 T& operator[](size_t index);     
 const T& operator[](size_t index) const;     
 vector operator=(const vector& v);      
 T& at(size_t loc);     
 const T& at(size_t loc) const;      
 void pop_back();     
 void push_back(const T& val);      
 size_t size() const;     
}; 
常数向量x;
x、 在(0);//调用const版本;
向量y;
x、 在(0);//调用非常量版本;
<>这是一个非常普通的C++范例,它是基于<代码> const < />代码的方法。在这个例子中,出于同样的原因,你发布了
操作符[]
也有常量和非常量版本返回对
T
的引用,并可以处理未声明为
const
向量<代码>常数T&at(尺寸位置)常数
返回对
T
const
引用,当有声明为
const
向量时使用

漂亮的警察,对吧?容器保留了
const
T&at(size\u T loc)的含义
返回对
T
的引用,并可以处理未声明为
const
向量<代码>常数T&at(尺寸位置)常数
返回对
T
const
引用,当有声明为
const
向量时使用


漂亮的警察,对吧?容器保留了
const

的含义。您可以说您正在重载
vector.at()
方法。第一个参数采用隐式
Vector*this
参数,但第二个参数采用
const Vector*this
参数(在const引用返回旁边,请注意方法签名上的
const
)。因此,第一个将在常量实例上调用,第二个将在非常量实例上调用。

您可以说您正在重载
vector.at()
方法。第一个参数采用隐式
Vector*this
参数,但第二个参数采用
const Vector*this
参数(在const引用返回旁边,请注意方法签名上的
const
)。因此,第一个将在常量实例上调用,第二个将在非常量实例上调用。

看看我问的问题:看看我问的问题:thnx alot!!为什么会有三个建设者@user3036061-因为他们做3件不同的事情!第一个是默认构造函数,它只构造一个空向量。第二个通过复制另一个向量的内容来构造向量。第三个通过填充
num
val
副本来构造一个向量!!为什么会有三个建设者@user3036061-因为他们做3件不同的事情!第一个是默认构造函数,它只构造一个空向量。第二个通过复制另一个向量的内容来构造向量。第三个通过使用
val
num
副本填充向量来构造向量。