我试图找到很多,如果只有一个类在多重继承中变成虚拟的话?在这种情况下,构造函数调用的行为对我来说并不清楚.比如说代码 -
#include<iostream>
using namespace std;
class grand{
public:
grand(){cout<<"grandfather"<<endl;}
};
class parent1:virtual public grand{ //virtual used only here
public:
parent1(){cout<<"parent1 "<<endl;}
};
class parent2: public grand{
public:
parent2(){cout<<"parent2"<<endl;}
};
class child:public parent1,public parent2{
public:
child(){cout<<"child"<<endl;}
};
int main() {
child s;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出如下
grandfather
parent1
grandfather
parent2
child
Run Code Online (Sandbox Code Playgroud)
但是在上面的代码中如果我们改变这个
class parent1:virtual public grand{
public:
parent1(){cout<<"parent1 "<<endl;}
};
class parent2: public grand{
public:
parent2(){cout<<"parent2"<<endl;}
};
Run Code Online (Sandbox Code Playgroud)
对此
class parent1:public grand{ //virtual removed from here
public:
parent1(){cout<<"parent1 "<<endl;} …Run Code Online (Sandbox Code Playgroud) 在[7.1.4库函数的使用]中,我读到:
标题中声明的任何函数可以另外实现为标题中定义的函数式宏...
和
任何实现为宏的库函数的调用都应扩展为仅对其每个参数进行一次计算的代码...
那么getc,[7.21.7.5 getc函数]:
getc函数等效于fgetc,除非它是作为宏实现的,它可能会多次评估流,因此参数永远不应该是带有副作用的表达式.
定义是getc:
getc单独实现(似乎不符合但是?)作为宏,它可以两次评估其参数?既,C和C ++,支持看似等效集等转义序列\b,\t,\n,\"和开始与反斜线字符他人(\)。如果跟随正常字符,如何处理反斜杠?据我从几个编译器中记得,转义字符\被默默地跳过。在 cppreference.com 上,我阅读了这些文章
我只找到了这个关于孤儿反斜杠的注释(在 C 文章中)
如果反斜杠后跟此处未列出的任何字符,则 ISO C 需要诊断:[...]
以上参考表。我还看了一些在线编译器
#include <stdio.h>
int main(void) {
// your code goes here
printf("%d", !strcmp("\\ x", "\\ x"));
printf("%d", !strcmp("\\ x", "\\\ x"));
printf("%d", !strcmp("\\ x", "\\\\ x"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << (string("\\ x") == "\\ x");
cout << (string("\\ x") …Run Code Online (Sandbox Code Playgroud) 我的应用从出来后就支持了几个 siri 快捷方式,好久没碰了。我的项目在 11.3.2 中编译和构建,但不在 11.4 中。
我得到的错误是应该从我的意图定义文件生成的类,以及我在我的意图处理程序中引用的类不再被找到。
例如,在我的意图定义文件中,我有一个名为“MyStatus”的自定义意图。
然后我有一个 MyStatusIntentHandler:
#import "MyStatusIntent.h"
@interface MyStatusIntentHandler<MyStatusIntentHandling> : NSObject
Run Code Online (Sandbox Code Playgroud)
在 11.4 中,我找不到“MyStatusIntent.h”文件。在 11.3.1 及更早版本中,它构建得很好。
我不太擅长项目配置和结构,所以我有点不知从哪里开始挖掘。如果有人有任何指示,以及 11.4 中的哪些内容可能是新的并给我带来问题,我会全力以赴。
假设我有一个Java8 Stream<FileReader>,并且使用了该流map,那么如何控制FileReader流中使用的s 的关闭?
请注意,我可能无权访问个人FileReader,例如:
filenames.map(File::new)
.filter(File::exists)
.map(f->{
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(f));
} catch(Exception e) {}
return Optional.ofNullable(br);
})
.filter(Optional::isPresent)
.map(Optional::get)
.flatMap(...something that reads the file contents...) // From here, the Stream doesn't content something that gives access to the FileReaders
Run Code Online (Sandbox Code Playgroud)
在进行了其他一些映射等之后,我最终FileReader在续集中失去了。
我首先认为垃圾收集器可以在需要时执行此操作,但是当filenames它很长时,我已经经历了OS描述符耗尽Stream。
您认为什么更好?
template <typename T> void func(T x,T y) {}
Run Code Online (Sandbox Code Playgroud)
或者
template <typename T> void func(T x,decltype(x) y) {}
Run Code Online (Sandbox Code Playgroud)
恕我直言,第二种形式似乎更可取,因为 x 和 y 类型之间的链接是明确的,并且至少在重命名模板标识符时似乎不太容易出错。
编辑
第二种形式允许您使用第一个参数使用的子类型来调用函数,而第一种形式需要完全相同的类型。这个论点似乎比之前的论点稍微好一些。
在我的应用程序中,我有一个按钮可以创建带有特定消息的 TextView。如何将文本的文本对齐方式设置为 TextView 的右侧?我在 XML 中看到了该属性,但我不知道如何在 Java 中进行操作。
我的朋友在接受采访时被问到这个问题:
生成一个有限但任意大的二叉树
O(1).该方法generate()应返回一个二进制树,其大小无限但有限.
在采访之后我们都对它进行了很长时间的考虑,但我们最多只能提出O(n)解决方案.
我们将如何产生O(1)?它甚至可能吗?还有更多的东西吗?
为什么不能扩展参数类型?
auto lambda = []() { return 'c'; };
template <typename ... Ts>
struct MyClass
{
};
template <typename ... Ts>
void createMyClass(Ts&& ... ts)
{
/* SUPPOSED TO CREATE MY CLASS WITH THE RETURN VALUES OF THE CALLABLES */
MyClass< (decltype(std::declval<Ts>()()), ...)> d;
}
int main()
{
createMyClass(lambda, lambda);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
decltype(std::declval<Ts>()())应该从调用中获取返回值的类型Ts。然后我尝试通过在它后面执行 , ... 并将其括在括号中来扩展它,这是一个折叠表达式。与我正在寻找的内容本质上等效的是MyClass<return_type1, return_type2, return_type_n>.
"syntax error: ',' was unexpected here
Run Code Online (Sandbox Code Playgroud)
和
syntax error: unexpected token '...' following 'statement'
Run Code Online (Sandbox Code Playgroud) 我有以下Java 8 Swing代码:
JButton button = new JButton("Browse");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Choose file as input");
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
FileNameExtensionFilter filter = new FileNameExtensionFilter("Excel Filter", "xls", "xlsx");
fileChooser.setFileFilter(filter);
if (fileChooser.showOpenDialog(mainWindow) == JFileChooser.APPROVE_OPTION) {
File selection = fileChooser.getSelectedFile();
createFile(selection);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这个想法是,用户选择一个目录,然后键入应用程序将随后创建的新文件的名称。但是,当我单击按钮时,这就是我看到的:
请注意,在没有“ File Name ”文本字段的地方可以输入新文件名吗?我需要更改哪些配置才能获得此功能?
c++ ×4
java ×3
c ×2
java-8 ×2
algorithm ×1
android ×1
binary-tree ×1
c++11 ×1
constructor ×1
decltype ×1
escaping ×1
file ×1
function ×1
ios ×1
java-stream ×1
jfilechooser ×1
libc ×1
macros ×1
objective-c ×1
oop ×1
portability ×1
sirikit ×1
swift ×1
swing ×1
templates ×1
textview ×1
xcode ×1