y**b 发帖数: 10166 | 1 ///////////////////////////////////////////////////////////
A:
class Widget {
public:
...
size_t weight() const;
size_t maxSpeed() const;
...
};
bool operator<(const Widget& lhs, const Widget& rhs)
{
return lhs.maxSpeed() < rhs.maxSpeed();
}
multiset widgets;
///////////////////////////////////////////////////////////
B:
class Widget {
public:
...
size_t weight() const;
size_t maxSpeed() const;
...
};
struct MaxSpeedCompare:
public binary_function {
bool operator()(... 阅读全帖 |
|
s****s 发帖数: 50 | 2 C++ Faq:
[18.5] What's the difference between "Fred const* p", "Fred* const p" and "F
red const* const p"?
You have to read pointer declarations right-to-left.
Fred const* p means "p points to a constant Fred": the Fred object can't be
changed via p.
Fred* const p means "p is a const pointer to a Fred": you can't change the p
ointer p, but you can change the Fred object via p.
Fred const* const p means "p is a constant pointer to a constant Fred": you
can't change the pointer p itself, nor can y... 阅读全帖 |
|
x******a 发帖数: 6336 | 3 I found if I make the second parameter const, i.e.std::ostream& operator<<(
std::ostream& os, const str& s), it worked now. what happened?
std::ostream& operator<<(std::ostream& os, str& s){
//obliterate existing value(s)
for (str::size_type i=0; i!=s.size(); ++i)
os<
return os;
}
class str{
public:
typedef std::vector::size_type size_type;
//constructors
str();
str(size_type n,char c);
str(const char* cp);
template str(In b, ... 阅读全帖 |
|
w***g 发帖数: 5958 | 4 别的都不值得argue了。const是一个很重要的特性。一个减少错误最好的办法就是在所有
应该加const的地方都加上const。写多线程程序这一点很重要。
const的语义有一个非常简单的规则:const永远只修饰它immediately左边的那个东西。
比如
int const * p;
int * const q;
p = ...没问题,但是*p = ...不行
q = ...不行,但是*q = ...没问题。
加多少层都不会搞混。像const int a这种写法应该彻底杜绝。
函数调用所有进去的都以const &传入(除了POD),所有出来的都以指针传入。
写C++设计和封装非常重要。很多恶心东西是必不可少的,但是只要不让它跨越接口,
一般后患就不会太多。 |
|
c***2 发帖数: 838 | 5 Here's the full file. You may compile and run: any case I missed?
==================================================================
/* wild.c
*/
#include
#include
#include
#define STR_SIZE 256
//===========================================================
int matchndots(const char *text, const char *dstr, int len)
{
while(len&&*text&&*dstr&&(*text==*dstr || *dstr=='.')){
text++;
dstr++;
len--;
}
if(!len)
return 1;
... 阅读全帖 |
|
E*****7 发帖数: 128 | 6 class String
{
public:
String(const char*);
String();
friend int strcmpu(const String& lhs, const String& rhs);
private:
char* s;
int len;
};
// Implementation for it to compile("Big Three" issue exists)
#include
class String
{
public:
String(const char* in_s)
{
if (in_s)
{
s = new char[strlen(in_s) + 1];
strcpy(s, in_s);
} else {
String();
}
}
String()
{
s = 0;
len = 0;
}
friend int strcmpu(const String& lhs, const String& rhs);
private:
char* s;
... 阅读全帖 |
|
f*******t 发帖数: 7549 | 7 这个是很基本的数据结构,建议看一下wiki
我前几天实现了它,只有基本的insert和search,没有对查找child list进行优化,代
码贴出来供参考:
#include
#define MAX_LENGTH 64
using namespace std;
static char buff[MAX_LENGTH];
class Trie {
public:
Trie();
Trie(char value);
bool Insert(const char *str);
bool Search(const char *str) const;
void PrintAll(int pos) const;
private:
char _value;
Trie *_sibling;
Trie *_child;
};
Trie::Trie()
{
_value = 0;
_sibling = NULL;
_child = NULL;
}
Trie::Trie(char value)
... 阅读全帖 |
|
v***a 发帖数: 365 | 8 来自主题: JobHunting版 - 问个算法题 第一次写 c 程序,不保证正确,请自己 debug
程序假设单词是 a to z 组成
用的 bst counting, 然后 导出来 qsort
#include
#include
struct _node;
typedef struct _node {
int cc;
char c;
struct _node * n[26];
struct _node * fa;
} node;
void addToTree(node * root, node * r, const char * p1, const char * p2) {
int t;
int i;
if (p1 == p2) {
if (r->cc == 0) root->cc++;
r->cc++;
return;
}
t = (*p1) - (int)'a';
if (r->n[t] == NULL) {
r->n[t] = (node *... 阅读全帖 |
|
w****x 发帖数: 2483 | 9 /*
scramble string,judge if one string can be scrambled to another one
tiger
/ \
ti ger
/ \ / \
t i g er
/ \
e r
rotation is allowded
itreg
/ \
it reg
/ \ / \
t i g re
/ \
e r
then tiger can be changed to itreg
*/
bool _inner_can_scramble(const char* szStr1, const char* szStr2, int n);
bool CanScramble(const char* szStr1, const char* szStr2)
{
assert(szStr1 && szStr2);
int nLen1 = strlen(szStr1);
int nLen2 = strlen(szStr2);
if (nLen1 !... 阅读全帖 |
|
w****x 发帖数: 2483 | 10 贴一个递归和DP的:
/*
scramble string,judge if one string can be scrambled to another one
tiger
/ \
ti ger
/ \ / \
t i g er
/ \
e r
rotation is allowded
itreg
/ \
it reg
/ \ / \
t i g re
/ \
e r
then tiger can be changed to itreg
*/
bool _inner_can_scramble(const char* szStr1, const char* szStr2, int n);
bool CanScramble(const char* szStr1, const char* szStr2)
{
assert(szStr1 && szStr2);
int nLen1 = strlen(szStr1);
int nLen2 = strlen(szStr2);
... 阅读全帖 |
|
w****x 发帖数: 2483 | 11 /*
scramble string,judge if one string can be scrambled to another one
tiger
/ \
ti ger
/ \ / \
t i g er
/ \
e r
rotation is allowded
itreg
/ \
it reg
/ \ / \
t i g re
/ \
e r
then tiger can be changed to itreg
*/
bool _inner_can_scramble(const char* szStr1, const char* szStr2, int n);
bool CanScramble(const char* szStr1, const char* szStr2)
{
assert(szStr1 && szStr2);
int nLen1 = strlen(szStr1);
int nLen2 = strlen(szStr2);
if (nLen1 !... 阅读全帖 |
|
J**9 发帖数: 835 | 12 Problem at
http://discuss.leetcode.com/questions/765/word-break
This does not seem to be a DP problem, just do it in a straightforward way.
Here's my implementation in C. Any issue?
Thanks.
//===========================================================
#include
#include
#include
#include
#include
/**
* Given a string s and a dictionary of words dict, determine if s can be
segmented into a space-separated sequence of one or more
* dictionary w... 阅读全帖 |
|
A*******e 发帖数: 2419 | 13 写了一个zigzag,通过了测试,但运行时间在C++里算慢的,相当于C#的水平。谁有更
简洁的
解法?index计算太容易错了,必须在纸上分析清楚才行。
class Solution {
public:
string convert(string s, int nRows) {
if (nRows == 1) {
return s;
}
vector char_rank;
for (int i = 0; i < s.size(); ++i) {
char_rank.push_back({s[i], GetNewIndex(i, nRows)});
}
sort(char_rank.begin(), char_rank.end(), CharRankComp());
string result;
for (const auto& it : char_rank) {
... 阅读全帖 |
|
N****w 发帖数: 21578 | 14
【 以下文字转载自 Programming 讨论区 】
发信人: JiayiWang (noname), 信区: Programming
标 题: 请教一个基础C++问题
发信站: BBS 未名空间站 (Mon Sep 7 15:12:40 2009, 美东)
int i = 42;
std::cin >> i;
const int &r1 = 42;
const int &r2 = r1+i;
以上语句是可以编译通过的,运行也没问题。 我的问题是,C++规定,const的
reference只能指向const变量,const变
量是compile的时候就初始化的。 但是在
>>>>no... const variable dosn't mean it's constant bah.
const int &r2 = r1+i;
里面,i是runtime由user输入的,那么定义成const int &r2的reference为什么没有编
译报错呢? |
|
z**i 发帖数: 394 | 15 A small piece of code to verify your guess. :)
/*
By ZuZi Sun Nov 4 19:16:45 CST 2007
* const int* p: a int* pointer pointing to a const object
* int* const p: a char* pointer who is a const type itself
* int const *p: same with const char* p
*/
#include
using namespace std;
int main()
{
int a = 1;
int b = 10;
// an int* ponter pointing to a const int
const int* p2const = &a;
//(*p2const)++; //error: increment of read-only location
p |
|
c***d 发帖数: 996 | 16 ☆─────────────────────────────────────☆
hapyrockets (hapyrockets) 于 (Thu Sep 27 19:16:35 2007) 提到:
下面的语句:
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
为什么
str3 == str4 -> false
str5 == str6 -> true
都是const, 我觉得 compiler让str3, str4, str5, str6都指向一个地址也未尝不可啊
。
☆─────────────────────────────────────☆
Pontiff (树) 于 (Thu Sep 27 19:26:08 2007) 提到:
再说一遍,数组不是指针
下面的语句:
const char str3[] = "abc";
const char str4[] = "abc";
const char* |
|
t******m 发帖数: 255 | 17 #include
templateclass Rational;//forward deceleration
template std::ostream& operator<< (std::ostream& , const
Rational& ); //为什么这里用 不行。而在class里要用
templateclass Rational
{
public:
Rational(const T & top,const T & bottom):Numerator(top),Denominator(
bottom){}
const T& Num()const{return Numerator;}
const T& Dem()const{return Denominator;}
virtual ~Rational(){}
friend std::ostream& operator<< (std::ostream& , const Ratio |
|
d****j 发帖数: 293 | 18 Essential C++ 第二章介绍了如何使用function pointer,我试了了一下,想获取一个
定义好的function pointer array的长度,却怎么也搞不定,请指教。
具体的问题是,有5中sequence,如fibonacci序列,squared序列,等等,假设有下列5
个对应的function,输入参数为 int size,返回一个size长度的const vector;
const vector* fibon_seq(int);
const vector* lucus_seq(int);
const vector* pell_seq(int);
const vector* triang_seq(int);
const vector* square_seq(int);
再有一个从一个vector中取出第n个元素的函数,参数为pos,要取的数字的位置,elem,
引用,存储返回值,fp,第三个是function pointer,具体如下:
bool seq_elem(int pos, int& elem, co... 阅读全帖 |
|
g*********s 发帖数: 1782 | 19 the following two str_cmp have the diff on the major loop. which one is
better?
the 1st seems better in the look. but it does have the side effect that
p and q are possibly pointing to unknown memory location.
so i prefer the 2nd. anyone agree?
int str_cmp(const char* str1, const char* str2) {
if ( str1 == str2 ) {
return 0;
}
if ( str1 == NULL || str2 == NULL ) {
return (str1 == NULL ? -1 : 1);
}
const char* p = str1;
const char* q = str2;
int res (0)... 阅读全帖 |
|
r****t 发帖数: 10904 | 20 非 template 情况似乎比较清楚了,class template 里面的 static data
member 的定义和初始化有没有啥龟腚?
举个例子:
template
class StackWithCapacity : public stack_adapter
{
public:
typedef typename stack_adapter< Container>::size_type size_type;
private:
static const size_type capacity = 5;
};
capacity 是个 static const member, 我就直接在 class body 里面初始化了,
据 c++ primer,class body 外面还必须 define without initializer (虽然我我不这么做也能编译并运行正常). 这样我就在外面加
template
StackWithCapacity... 阅读全帖 |
|
y****e 发帖数: 23939 | 21 I paste the full code to if anybody can help me out.
the function refalifn and refalifnfast are good to compile on vc++.
But the function refalidf and refalifdf will have this LNK2019 error on vc++
. Same code compiles OK on g++. It must be some kind of restraint with
visual c++.
static double refalifn(const gsl_vector * v, void *params)
{
Dict *dict = (Dict *) params;
double x = gsl_vector_get(v, 0);
double y = gsl_vector_get(v, 1);
double a = gsl_vector_get(v, 2);
EMData *t... 阅读全帖 |
|
x******a 发帖数: 6336 | 22 code和编译的错误在下面。
尝试了另外两种方式编译都没有问题:
1. 把struct Obj和double plus(..)定义在class外面
2. 在total()的定义里面,用for loop而不用std::accumulate.
请教怎么回事?谢谢!
#include
#include
#include
class Foo{
struct Obj{
double a;
explicit Obj(const double& a_): a(a_){}
};
double plus(double result, const Obj& obj){
return result+ obj.a;
}
std::vector v;
public:
void append(const double& a){ v.push_back(Obj(a));}
double total() const{
return std::accumulate(v.begin(), v.... 阅读全帖 |
|
R*********w 发帖数: 23 | 23 没错啊。const T & with T as "const char*", const 指定 T 本身为常量。这里T是
指针,可不就是
const char * const &
上面第二个const 从模版参数来,限定char指针为常量。第一个const从const char*来。 |
|
t********e 发帖数: 1169 | 24 【 以下文字转载自 JobHunting 讨论区 】
发信人: mitbbs59 (bEQi), 信区: JobHunting
标 题: 本版1年以内的所有 面经题目,含帖子link [为大家方便]
发信站: BBS 未名空间站 (Fri Jan 29 14:20:44 2010, 美东)
不敢保证全部涵盖,大部分的都在。
我自己找了一遍,大家一起用着都方便。
不过只是含有题目的帖子 我才包含进来了,只分享经验没贴题目的 我都没有包含
进来。
大家复习着方便。
1. 一个sorted interger Array[1...N], 已知范围 1...N+1. 已知一个数字missing。
找该数字。
把原题改为unsorted,找missing数字。 performance。
2. 复制linked list。 已知每个节点有两个pointer,一个指向后一个节点,另一个指向
其他任意一节点。 O(n)时间内,无附加内存,复制该linked list。(存储不连续)
3. 一个party N个人,如果一个人不认识任何其他人,又被任何其他人认识,此人为
celeb... 阅读全帖 |
|
t********e 发帖数: 1169 | 25 【 以下文字转载自 JobHunting 讨论区 】
发信人: mitbbs59 (bEQi), 信区: JobHunting
标 题: 本版1年以内的所有 面经题目,含帖子link [为大家方便]
发信站: BBS 未名空间站 (Fri Jan 29 14:20:44 2010, 美东)
不敢保证全部涵盖,大部分的都在。
我自己找了一遍,大家一起用着都方便。
不过只是含有题目的帖子 我才包含进来了,只分享经验没贴题目的 我都没有包含
进来。
大家复习着方便。
1. 一个sorted interger Array[1...N], 已知范围 1...N+1. 已知一个数字missing。
找该数字。
把原题改为unsorted,找missing数字。 performance。
2. 复制linked list。 已知每个节点有两个pointer,一个指向后一个节点,另一个指向
其他任意一节点。 O(n)时间内,无附加内存,复制该linked list。(存储不连续)
3. 一个party N个人,如果一个人不认识任何其他人,又被任何其他人认识,此人为
celeb... 阅读全帖 |
|
h**k 发帖数: 3368 | 26 掌握const在C++的用法,只需要能回答下面的5个const的作用
const int*const Method3(const int*const&)const; |
|
e**c 发帖数: 95 | 27 (1)const xyz& operator+(const xyz &rhs) const;
和
(2)const xyz& operator+(const xyz &lhs, const xyz &rhs) const;
有什么区别?
我不太明白用(1)的话, a=b+c 是如何实现的? |
|
r********e 发帖数: 27 | 28 弱问一下,xyz& operator+(int m) “const”, 最后那个const表示什么意思?是不
是说first
operand is const?
const xyz& operator+(const xyz &rhs) “const”, 需要这个设成const吗?
谢了 |
|
p****n 发帖数: 148 | 29 C版
/**************************/
int match (const char *s1, const char *s2, const int len) {
int r = 0;
for (int i = 0; i < len; i++)
if (*(s1+i) == *(s2+i))
r++;
return r;
}
size_t edit (const char *s, const char *u, int *begin, int *end) {
size_t maxmatch = 0;
for (int i = 0, j = strlen(u)-1; i < strlen(s); (j > 0)?j--:i++) {
int len = min(strlen(u) - j, strlen(s) - i);
int m = match(s+i, u+j, len);
if (m > maxmatch) {
... 阅读全帖 |
|
w****x 发帖数: 2483 | 30 struct NODE
{
vector vecGUID;
NODE* nodes[256];
NODE() { memset(nodes, 0, sizeof(nodes)); }
};
void _inner_get_guid(NODE* pNode, const char* str, int k, vector& vec)
{
if (NULL == pNode)
return;
if (k <= 0)
{
vec = pNode->vecGUID;
return;
}
_inner_get_guid(pNode->nodes[*str], str+1, k-1, vec);
}
vector getGUID(const char* str, NODE* pRoot, int k)
{
vector vecRet;
if (NULL == pRoot || NULL == str || *str == 0 ... 阅读全帖 |
|
w****x 发帖数: 2483 | 31
const char* getNum(const char* q, int& res)
{
const char* p = q;
if (NULL == p) return NULL;
res = 0;
while (*p != '.' && *p != 0)
res = 10*res + *p++ - '0';
if (*p == '.') p++;
return p;
}
bool lessThan(const char* str1, const char* str2)
{
if (NULL == str1 || NULL == str2)
return false;
const char* p1 = str1;
const char* p2 = str2;
while (*p1 != 0 && *p2 != 0)
{
int x,y;
p1 = getNum(p1, x);
p2 = getNum(p2, y);... 阅读全帖 |
|
I**********s 发帖数: 441 | 32 最喜欢 wwwyhx的解法: recursive descent.
我也写了个, 用的是建造AST, 再evaluate AST. 应该相当完整了: 数字之前可以有+-
号, 中间可以有一个小数点. 数字和运算符号之间可以有空格. 可以使用+,-,*,/,^,以
及括号. 可以检测错误输入并报出错误位置. 就是比较长, 不适合面试用. 供大家参考.
#include
#include // for pow()
using namespace std;
struct Node {
double val;
char op;
int op_prec; // precedence of operator
int type; // 0 - operand, 1 - operator
Node * left;
Node * right;
Node(double _val, char _op, int _type) : val(_val), op(_op),
type(_type), lef... 阅读全帖 |
|
I**********s 发帖数: 441 | 33 最喜欢 wwwyhx的解法: recursive descent.
我也写了个, 用的是建造AST, 再evaluate AST. 应该相当完整了: 数字之前可以有+-
号, 中间可以有一个小数点. 数字和运算符号之间可以有空格. 可以使用+,-,*,/,^,以
及括号. 可以检测错误输入并报出错误位置. 就是比较长, 不适合面试用. 供大家参考.
#include
#include // for pow()
using namespace std;
struct Node {
double val;
char op;
int op_prec; // precedence of operator
int type; // 0 - operand, 1 - operator
Node * left;
Node * right;
Node(double _val, char _op, int _type) : val(_val), op(_op),
type(_type), lef... 阅读全帖 |
|
f*******t 发帖数: 7549 | 34 相当丑陋的BFS,已经尽量去除copy string的时间了,但还是超时,求指点T_T
class Path {
public:
Path() { path = new vector; }
~Path() { delete path; }
Path* duplicate() const {
Path *np = new Path;
np->path = new vector(*path);
return np;
}
vector *path;
};
class Solution {
public:
vector> findLadders(string start, string end, unordered_
set &dict) {
vector> ans;
queue<... 阅读全帖 |
|
f*******t 发帖数: 7549 | 35 相当丑陋的BFS,已经尽量去除copy string的时间了,但还是超时,求指点T_T
class Path {
public:
Path() { path = new vector; }
~Path() { delete path; }
Path* duplicate() const {
Path *np = new Path;
np->path = new vector(*path);
return np;
}
vector *path;
};
class Solution {
public:
vector> findLadders(string start, string end, unordered_
set &dict) {
vector> ans;
queue<... 阅读全帖 |
|
R****d 发帖数: 27 | 36 a global constant by default has internal linkage, and thus can be included
in header file.
constant express is integral only.
constant expression evaluates to const. const is not necessarily constant
expression.
so
const double pi=3.14 is a constant, not a constant expression.
In a test.hpp:
const double pd =3.14;// this is ok. 3.14 is const.
class X {
static const double pd =3.14;//Line A: this is error. 3.14 is not
constant expression
static const int pi = 3; // Line B: this is ok. 3 ... 阅读全帖 |
|
d****n 发帖数: 1241 | 37 可以使用编译器在lexing和parsing的时候用的某种技术:recursive descent parsing
http://en.wikipedia.org/wiki/Recursive_descent_parser
下边的代码假设单个的数字也是合法的,比如:
1 合法
(1)合法
(1) + (2) 合法, 等等
#include
#include
#include
#include
using namespace std;
enum TokenKind {
TOK_Unknown = -1,
TOK_End,
TOK_Op,
TOK_LParen,
TOK_RParen,
TOK_Num,
};
static TokenKind getToken(const string &Input, int &Pos)
{
assert(Pos <= Input.length());
char TheChar = Input[Pos];
while (isspace(TheC... 阅读全帖 |
|
d****n 发帖数: 1241 | 38 可以使用编译器在lexing和parsing的时候用的某种技术:recursive descent parsing
http://en.wikipedia.org/wiki/Recursive_descent_parser
下边的代码假设单个的数字也是合法的,比如:
1 合法
(1)合法
(1) + (2) 合法, 等等
#include
#include
#include
#include
using namespace std;
enum TokenKind {
TOK_Unknown = -1,
TOK_End,
TOK_Op,
TOK_LParen,
TOK_RParen,
TOK_Num,
};
static TokenKind getToken(const string &Input, int &Pos)
{
assert(Pos <= Input.length());
char TheChar = Input[Pos];
while (isspace(TheC... 阅读全帖 |
|
Q*****a 发帖数: 33 | 39 没想到什么比O(n^2)好的方法,毕竟是partially order, 不是total order
但到不了O(n^2*l), 只是O(n^2 + nl).只需要过一遍string计算sign就可以了,另外将
数组按长度从大到小排列,提前剪枝也可以优化一些,但复杂度还是O(n^2)
const int INT_BITS = sizeof(int) * 8;
const int DATA_LEN = 256/INT_BITS;
class Int256 {
vector data;
public:
Int256(): data(DATA_LEN, 0) {
}
Int256(string s): data(DATA_LEN, 0) {
for (auto c: s) {
Set((unsigned char)c);
}
}
void Set(int l) {
data[l/INT_BITS] |= 1 << (l%INT_BITS);
}
... 阅读全帖 |
|
h**o 发帖数: 548 | 40 谁考你了?
template
class Node{ //used by List
Node(T data, Node* next):_data(data), _next(next){}
T _data;
Node* _next;
friend class List; //only friend can call private
friend class ListIterator;
};
template
class List{
List(Node* head=NULL, Node* tail=NULL);
List(const List& orig);
List& operator=(const List& orig);
push_front();push_end();pop_front();pop_end();
//the following are used for iterator:
typedef ListIterator... 阅读全帖 |
|
J*******g 发帖数: 381 | 41 【 以下文字转载自 Programming 讨论区 】
发信人: JiayiWang (noname), 信区: Programming
标 题: 请教一个基础C++问题
发信站: BBS 未名空间站 (Mon Sep 7 15:12:40 2009, 美东)
int i = 42;
std::cin >> i;
const int &r1 = 42;
const int &r2 = r1+i;
以上语句是可以编译通过的,运行也没问题。 我的问题是,C++规定,const的
reference只能指向const变量,const变
量是compile的时候就初始化的。 但是在
const int &r2 = r1+i;
里面,i是runtime由user输入的,那么定义成const int &r2的reference为什么没有编
译报错呢? |
|
J*******g 发帖数: 381 | 42 【 以下文字转载自 Programming 讨论区 】
发信人: JiayiWang (noname), 信区: Programming
标 题: 请教一个基础C++问题
发信站: BBS 未名空间站 (Mon Sep 7 15:12:40 2009, 美东)
int i = 42;
std::cin >> i;
const int &r1 = 42;
const int &r2 = r1+i;
以上语句是可以编译通过的,运行也没问题。 我的问题是,C++规定,const的
reference只能指向const变量,const变
量是compile的时候就初始化的。 但是在
const int &r2 = r1+i;
里面,i是runtime由user输入的,那么定义成const int &r2的reference为什么没有编
译报错呢? |
|
r****t 发帖数: 10904 | 43 把 error message 也贴一下:
g++ -Wall main.o -o main
main.o: In function `void M::Location::read >(char
const*, SArray::Array&) const':
main.cxx:(.text._ZNK1M8Location4readIN6SArray5ArrayIfLj3EEEEEvPKcRT_[void M:
3u>&) const]+0x1b): undefined reference to `void M::read
float, 3u> >(M::Location const&, char const*, SArray::Array&)'
main.o: In function `void M::read_matrix >(char
const*, char const*, SArray::Array |
|
J*******g 发帖数: 381 | 44 int i = 42;
std::cin >> i;
const int &r1 = 42;
const int &r2 = r1+i;
以上语句是可以编译通过的,运行也没问题。 我的问题是,C++规定,const的
reference只能指向const变量,const变
量是compile的时候就初始化的。 但是在
const int &r2 = r1+i;
里面,i是runtime由user输入的,那么定义成const int &r2的reference为什么没有编
译报错呢? |
|
X****r 发帖数: 3557 | 45 前一句 a=a+5+c;就应该出错了。你的operator +返回的是const X&,
而operator +自己的*this不是const,所以operator +的结果不能再
调用operator +。你把operator +改为
const X& operator+(const X& rhs) const;
const X& operator+(int m) const;
就对了。 |
|
N***m 发帖数: 4460 | 46 自己随便写的。但是不明白为什么say((const B*)&d2)不显式调用
operator const B*() in D2。难道slicing的优先级高抑或其他?
我概念不太清楚,望指教!
==========================================================
#include
using namespace std;
class B {
public:
virtual void say() const =0;
};
class D1 :public B {
string s;
public:
virtual void say() const
{
cout<<"bark!"<
}
};
class D2 :public B {
string s;
public:
virtual void say() const
{
cout<<"bark! bark!"<
}
operator const B*()
{
const B * |
|
c**********e 发帖数: 2007 | 47 Which one of the following statements about const variables is true?
a) The address of a const variable can only be assigned to a float variable.
b) A pointer to a non-const cannot be assigned the address of a const
variable.
c) A pointer to a const can be assigned to multiple objects at compile time.
d) Pointers to const objects must be initialized to NULL before they can be
referenced.
e) A pointer to a non-const cannot be assigned the address of a volatile
variable. |
|
j***i 发帖数: 1278 | 48 你哪里找的这么多题呀
Which one of the following statements about const variables is true?
a) The address of a const variable can only be assigned to a float variable.
b) A pointer to a non-const cannot be assigned the address of a const
variable.
c) A pointer to a const can be assigned to multiple objects at compile time.
d) Pointers to const objects must be initialized to NULL before they can be
referenced.
e) A pointer to a non-const cannot be assigned the address of a volatile
variable. |
|
j***i 发帖数: 1278 | 49 我找了一下,
c++ primer 16.2
const conversions: A function that takes a reference or pointer to a const
can be called with a reference or pointer to nonconst object, respectively,
without generating a new instantiation. If the function takes a nonreference
type, then const is ignored on either the parameter type or the argument.
That is, the same instantiation will be used whether we pass a const or
nonconst object to a function defined to take a nonreference type.const 转换
:接受 const 引用或 const 指针的函数可以分 |
|
c*******9 发帖数: 6411 | 50 get compile error from following code, any ideas?
thanks...
.....
set seen;
.....
pair::iterator, bool> res = seen.insert(str);
c:\apps\mvs8\vc\include\functional(143) : error C2784: 'bool
std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits>
&)' : could not deduce template argument for 'const std::_Tree<_Traits>
&' from 'const std::string'
1> c:\apps\mvs8\vc\include\xtree(1372) : see declaration of
'std::operator <'
1> c:\apps\mvs8\vc\include\fu... 阅读全帖 |
|