我知道常量对象或函数只能在常量成员上运行,但它是否能以相反的方式运行?
答案 0 :(得分:2)
Regular(非const)类成员函数可以调用任何const和非const类成员函数。
答案 1 :(得分:2)
简短回答是。
这就是C ++中 stra() as string={666,66,333,55}
stra2()as string={1,2,3,4}
For j = 0 To stra.GetLength(0)
Const ForReading = 1
Const ForWriting = 2
Dim objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile = objFSO.OpenTextFile(OpenFileDialog1.FileName, ForReading)
Dim strText = objFile.ReadAll
objFile.Close()
Dim strNewText = Regex.Replace(strText, stra(j), stra2(j))
objFile = objFSO.OpenTextFile(OpenFileDialog1.FileName, ForWriting)
objFile.WriteLine(strNewText)
objFile.Close()
Next
函数的美妙之处。您可以根据其const
- ness:
const
class Vector
{
public:
int GetItem();
int GetItem() const;
};
对象会导致调用const方法,但非const(const Vector
)会导致调用非const。让编译器找出要调用的方法(const或非const)。因此:
Vector
可以根据v.GetItem();
的实际类型调用其中任何一个。
为什么C ++允许它考虑任何" 获取"方法应该是只读函数吗? 好吧,不是语言律师的理由,请考虑这一点。
vector v; v [0] = 10;
如果v
中的重载运算符被声明为vector<>
,则不允许运算符(const
)在左侧使用(即作为l-值)。
如果仅提供非const,则会失败:
[]
但是由于方法可以在void process(const vector<int>& v)
{
cout << v[0]; // Must call const op []
}
的基础上重载,编译器会计算出要调用的重载。
另一方面,C ++允许const
转换为非const,反之亦然(const
和C风格转换),你总是可以从a调用另一个版本(非)const对象。
const_cast